// #include<iostream>
// using namespace std;
// #include<thread>
// #include<condition_variable>
// #include<mutex>

// //以下实现两个线程交替打印，一个打印奇数，一个打印偶数，确保偶数先打
// //思路: 同一把互斥锁实现两者互斥，但是交替打印不能导致饥饿问题，所以条件变量控制两者交替顺序

// int main()
// {
// 	int n = 100;
// 	bool flag = true;
// 	mutex mtx;
// 	condition_variable c;

// 	thread t1([&]()
// 		{
// 			int i = 1;
// 			while (i < n)
// 			{
// 				unique_lock<mutex> lock(mtx);
// 				while (flag)
// 					c.wait(lock);
// 				cout << i << endl;
// 				i += 2;
// 				flag = true;
// 				c.notify_one();
// 			}
// 		});

// 	thread t2([&]()
// 		{
// 			int j = 0;
// 			while (j < n)
// 			{
// 				unique_lock<mutex> lock(mtx);
// 				while (!flag)
// 					c.wait(lock);
// 				cout << j << endl;
// 				j += 2;
// 				flag = false;
// 				c.notify_one();
// 			}
// 		});

// 	t1.join();
// 	t2.join();
// 	return 0;
// }